#pragma once
#include "GameObject.hpp"
#include "GameSystem.hpp"
#include <vector>

namespace Typhoon {
	class GameWorld
	{
	public:
		GameWorld();
		~GameWorld();

		void AddSystem(GameSystem* system);
		void RemoveSystem(GameSystem* system);

		void AddGameObject(GameObject* gameObject);
		void RemoveGameObject(GameObject* gameObject);

	private:
		typedef std::vector<GameObject*> GameObjects;
		GameObjects gameObjects;

		typedef std::vector<GameSystem*> GameSystems;
		GameSystems gameSystems;

		void ComponentAdded(GameObject* gameObject);

	};
}

